<!--********************************************************************
* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title data-i18n="resources.title_bufferAnalystServiceGeometry_FGB"></title>
    <script type="text/javascript" src="../js/include-web.js"></script>
  </head>
  <body style="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0">
    <div id="map" style="margin: 0 auto; width: 100%; height: 100%"></div>
    <script type="text/javascript" src="../../dist/maplibregl/include-maplibregl.js"></script>
    <script type="text/javascript">
      var host = window.isLocal ? window.server : 'https://iserver.supermap.io';
      var map,
        attribution =
          "<a href='https://maplibre.org/' target='_blank'>© MapLibre </a>" +
          " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
          " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ",
        baseUrl = host + '/iserver/services/map-jingjin/rest/maps/京津地区地图/zxyTileImage.png?z={z}&x={x}&y={y}',
        serviceUrl = host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst';
      map = new maplibregl.Map({
        container: 'map',
        style: {
          version: 8,
          sources: {
            'raster-tiles': {
              attribution: attribution,
              type: 'raster',
              tiles: [baseUrl],
              tileSize: 256
            }
          },
          layers: [
            {
              id: 'simple-tiles',
              type: 'raster',
              source: 'raster-tiles'
            }
          ]
        },
        center: [116.2740019864, 39.8970124079],
        zoom: 12
      });
      map.addControl(new maplibregl.NavigationControl(), 'top-left');
      map.addControl(new maplibregl.supermap.LogoControl({ link: "https://iclient.supermap.io" }), 'bottom-right');

      map.on('load', function () {
        bufferAnalystFromGeometry();
      });

      function bufferAnalystFromGeometry() {
        var pointList = [
          [116.1916654036, 39.8888542507],
          [116.2031567225, 39.8888542507],
          [116.2156351162, 39.8963250173],
          [116.2740019864, 39.8970124079],
          [116.3103285499, 39.8970574832],
          [116.3321510064, 39.8970392162],
          [116.3377051439, 39.8973437531],
          [116.3463089006, 39.8978391816]
        ];

        //加载线
        var geometryLine = {
          type: 'Feature',
          geometry: {
            type: 'LineString',
            coordinates: pointList
          }
        };
        map.addLayer({
          id: 'bufferLine',
          type: 'line',
          source: {
            type: 'geojson',
            data: geometryLine
          },
          layout: {
            'line-join': 'round',
            'line-cap': 'round'
          },
          paint: {
            'line-color': 'red',
            'line-width': 4
          }
        });

        //加载点
        var pointGeometryFetures = [];
        for (i = 0; i < pointList.length; i++) {
          pointGeometryFetures.push({
            type: 'Feature',
            geometry: {
              type: 'Point',
              coordinates: pointList[i]
            }
          });
        }
        map.addLayer({
          id: 'bufferPoint',
          type: 'circle',
          source: {
            type: 'geojson',
            data: {
              type: 'FeatureCollection',
              features: pointGeometryFetures
            }
          },
          paint: {
            'circle-radius': 6 /* 圆的直径，单位像素 */,
            'circle-color': 'black' /* 圆的颜色 */
          },
          filter: ['==', '$type', 'Point']
        });

        var geoBufferAnalystParams = new maplibregl.supermap.GeometryBufferAnalystParameters({
          sourceGeometry: geometryLine,
          sourceGeometrySRID: 4326,
          bufferSetting: new maplibregl.supermap.BufferSetting({
            endType: maplibregl.supermap.BufferEndType.ROUND,
            leftDistance: new maplibregl.supermap.BufferDistance({ value: 300 }),
            rightDistance: new maplibregl.supermap.BufferDistance({ value: 300 }),
            radiusUnit: 'METER',
            semicircleLineSegment: 10
          })
        });
        
        new maplibregl.supermap.SpatialAnalystService(serviceUrl).bufferAnalysis(
          geoBufferAnalystParams,
          null,
          'FGB'
        ).then(function (serviceResult) {
            var FGBLayer = new maplibregl.supermap.FGBLayer({
              url: serviceResult.result.newResourceLocation,
              strategy: 'all',
              paint: {
                'fill-color': 'red' /* 填充的颜色 */,
                'fill-opacity': 0.4 /* 透明度 */
              }
            });
            map.addLayer(FGBLayer);
          });
      }
    </script>
  </body>
</html>
